﻿var Tablas_Controller =
{
    InitGrid:
    function Tablas_Controller_InitGrid()
    {
        var grid =
        {
            Target: "divGridTablas",
            TableId: "gridTablas",
            PrimaryKey: "Id",
            Fields:
            [
                { Header: "Codigo", DataField: "Id", Width: "70px", StyleCss: CssWeb.FormatText },
                { Header: "Nombre", DataField: "Nombre",DataFieldEdit : "Nombre", Width: "150px", StyleCss: CssWeb.FormatText, ControlEdit: GridJSON.TextBox, ControlCss: CssWeb.TextBoxMedium , Required: true },
                { Header: "Descripcion", DataField: "Descripcion", DataFieldEdit : "Descripcion", StyleCss: CssWeb.FormatText, ControlEdit: GridJSON.TextBox,ControlCss: CssWeb.TextBoxLarge },
                { Header: "Activo", DataField: "Activo", Width: "70px", DataFieldEdit : "Activo",ControlEdit: GridJSON.CheckBox },
            ],
            RecordSearch : { TablaId: "", Nombre: "", Descripcion: "" },
            ShowPaging: DatosControles.GridJSON_ShowPagging,
            ChooseShowPaging: DatosControles.GridJSON_ChoosePagging,
            TotalRecords:0,
            PageIndex: 1,
            OrderBy : "Nombre Asc",
            FunctionLoadGrid: Tablas_Controller.ListarGridJSON,
            FunctionExportToExcel: Tablas_Controller.ExportarExcelGrid,
            FunctionAddRecord: Tablas_Controller.EditarRegistro,
            FunctionSaveRecord: Tablas_Controller.GrabarRegistro,
            ButtonsActionRecord:
            [
                { styleCss: CssWeb.GridJSON_IconEdit, toolTip: DatosControles.GridJSON_ToolTipEditar, functionAction: Tablas_Controller.EditarRegistro },
                { styleCss: CssWeb.GridJSON_IconDelete, toolTip: DatosControles.GridJSON_ToolTipEliminar, functionAction: Tablas_Controller.EliminarRegistro },
                { styleCss: CssWeb.GridJSON_IconDetail, toolTip: DatosControles.GridJSON_ToolTipDetalle, functionAction: Tablas_Controller.DetalleRegistro }
            ]
        };

        Tablas_Controller.Grid = grid;
    },

    Grid : {},
    
    ListarGridJSON:
    function Tabla_Controller_ListarGridJSON(registroBusqueda,orderBy,cantidadMostrar, paginaActual) 
    {
        Tablas_Controller.Grid.RecordSearch = registroBusqueda;
        Tablas_Controller.Grid.ChooseShowPaging = cantidadMostrar;
        Tablas_Controller.Grid.PageIndex = paginaActual;
        Tablas_Controller.Grid.OrderBy = orderBy;

        Tablas_Controller.ListarGridPaging();
    },

    ListarGridPaging:
    function Tablas_Controller_ListarGridPaging() 
    {
        Global_UI.BlockUI(true);

        Global_UI.AjaxPOST
        (
            "EditarTablasEstados.aspx/ListarTablas",
            JSON.stringify
            ({
                registroBusqueda : Tablas_Controller.Grid.RecordSearch,
                paginaActual : Tablas_Controller.Grid.PageIndex,
                cantidadMostrar : Tablas_Controller.Grid.ChooseShowPaging,
                orderBy : Tablas_Controller.Grid.OrderBy
            }),
            Tablas_Controller.ListarGridPaging_CallBack
        );
    },

    ListarGridPaging_CallBack:
    function Tablas_Controller_ListarGridPaging_CallBack(response) 
    {
        var dataTable = response.d.Key;
        Tablas_Controller.Grid.TotalRecords = response.d.Value;

        if(!Global_UI.Exists(Tablas_Controller.Grid.TableId))
            GridJSON.DataBind(Tablas_Controller.Grid, dataTable);
        else
            GridJSON.DataBindOnlyRows(Tablas_Controller.Grid, dataTable);

        Global_UI.BlockUI(false);
    },

    ExportarExcelGrid:
    function Tablas_Controller_ExportarExcelGrid(registroBusqueda) 
    {
        Global_UI.BlockUI(true);

        Global_UI.AjaxPOST
        (
            "EditarTablasEstados.aspx/ExportarExcelTablas",
            JSON.stringify
            ({
                registroBusqueda: registroBusqueda,
                gridFields: Tablas_Controller.Grid.Fields
            }),
            Tablas_Controller.ExportarExcelGrid_CallBack
        );
    },

    ExportarExcelGrid_CallBack:
    function Tablas_Controller_ExportarExcelGrid_CallBack(response) 
    {
        Global_UI.MostrarArchivoExcel(response.d);

        Global_UI.BlockUI(false);
    },

    EditarRegistro:
    function Tablas_Controller_EditarRegistro(id) 
    {
        Global_UI.BlockUI(true);

        if(id==null) id = "0";

        Global_UI.AjaxPOST
        (
            "EditarTablasEstados.aspx/CargarTabla",
            JSON.stringify
            ({
                id: id
            }),
            Tablas_Controller.EditarRegistro_CallBack
        );
    },

    EditarRegistro_CallBack:
    function Tablas_Controller_EditarRegistro_CallBack(response) 
    {
        var tabla = response.d ;

        GridJSON.EditRecordGrid(Tablas_Controller.Grid,tabla);

        Global_UI.BlockUI(false);
    },

    GrabarRegistro:
    function Tablas_Controller_GrabarRegistro(tabla) 
    {
        Global_UI.BlockUI(true);

        if(tabla.Id == "0") tabla.Id = null;

        Global_UI.AjaxPOST
        (
            "EditarTablasEstados.aspx/GrabarTabla",
            JSON.stringify
            ({
                tabla: tabla
            }),
            Tablas_Controller.GrabarRegistro_CallBack
        );
    },

    GrabarRegistro_CallBack:
    function Tablas_Controller_GrabarRegistro_CallBack(response) 
    {
        var tabla = response.d.Key;
        var nuevoRegistro = response.d.Value;

        GridJSON.ReconstructRecordGrid(Tablas_Controller.Grid,tabla,nuevoRegistro);

        Global_UI.BlockUI(false);
    },

    EliminarRegistro:
    function Tablas_Controller_EliminarRegistro(id) 
    {
        Global_UI.Confirm
        (
            MensajesUsuario.PreguntaEliminarRegistro,
            MensajesUsuario.TituloEliminarRegistro,
            function()
            {
                Global_UI.BlockUI(true);

                Global_UI.AjaxPOST
                (
                    "EditarTablasEstados.aspx/EliminarTabla",
                    JSON.stringify
                    ({
                        id: id
                    }),
                    Tablas_Controller.EliminarRegistro_CallBack
                );
            }
        );
    },

    EliminarRegistro_CallBack:
    function Tablas_Controller_EliminarRegistro_CallBack(response) 
    {
        var id = response.d;

        GridJSON.DeleteRecordGrid(Tablas_Controller.Grid,id);

        Global_UI.BlockUI(false);
    },

    DetalleRegistro:
    function Tablas_Controller_DetalleRegistro(idTabla) 
    {
        Global_UI.BlockUI(true);

        $("#hiddenTablaId").val(idTabla);

        EditarTablasEstados_ASPX.LoadDialogEstados();
    }
};

var Estado_Controller =
{
    InitGrid:
    function Estado_Controller_InitGrid()
    {
        var grid =
        {
            Target: "divGridEstados",
            TableId: "gridEstados",
            PrimaryKey: "Id",
            Fields:
            [
                { Header: "Orden", DataField: "Orden",DataFieldEdit : "Orden", Width: "70px", StyleCss: CssWeb.FormatText, ControlEdit: GridJSON.TextBox, ControlCss: CssWeb.TextBoxShort , Required: true,RegularExpression: Regex.NumeroEntero },
                { Header: "Nombre", DataField: "Nombre",DataFieldEdit : "Nombre", Width: "150px", StyleCss: CssWeb.FormatText, ControlEdit: GridJSON.TextBox, ControlCss: CssWeb.TextBoxMedium , Required: true },
                { Header: "Descripcion", DataField: "Descripcion", DataFieldEdit : "Descripcion", StyleCss: CssWeb.FormatText, ControlEdit: GridJSON.TextBox,ControlCss: CssWeb.TextBoxLarge },
                { Header: "Activo", DataField: "Activo", Width: "70px", DataFieldEdit : "Activo",ControlEdit: GridJSON.CheckBox },
            ],
            RecordSearch : { TablaId: "", Nombre: "", Descripcion: "" },
            ShowPaging: DatosControles.GridJSON_ShowPagging,
            ChooseShowPaging: DatosControles.GridJSON_ChoosePagging,
            TotalRecords:0,
            PageIndex: 1,
            OrderBy : "Orden Asc",
            FunctionLoadGrid: Estado_Controller.ListarGridJSON,
            FunctionExportToExcel: Estado_Controller.ExportarExcelGrid,
            FunctionAddRecord: Estado_Controller.EditarRegistro,
            FunctionSaveRecord: Estado_Controller.GrabarRegistro,
            ButtonsActionRecord:
            [
                { styleCss: CssWeb.GridJSON_IconEdit, toolTip: DatosControles.GridJSON_ToolTipEditar, functionAction: Estado_Controller.EditarRegistro },
                { styleCss: CssWeb.GridJSON_IconDelete, toolTip: DatosControles.GridJSON_ToolTipEliminar, functionAction: Estado_Controller.EliminarRegistro }
            ]
        };

        Estado_Controller.Grid = grid;
    },

    Grid : {},
    
    ListarGridJSON:
    function Estado_Controller_ListarGridJSON(registroBusqueda,orderBy,cantidadMostrar, paginaActual) 
    {
        Estado_Controller.Grid.RecordSearch = registroBusqueda;
        Estado_Controller.Grid.ChooseShowPaging = cantidadMostrar;
        Estado_Controller.Grid.PageIndex = paginaActual;
        Estado_Controller.Grid.OrderBy = orderBy;

        Estado_Controller.ListarGridPaging();
    },

    ListarGridPaging:
    function Estado_Controller_ListarGridPaging() 
    {
        Global_UI.BlockUI(true);

        Estado_Controller.Grid.RecordSearch.TablaId = $("#hiddenTablaId").val();

        Global_UI.AjaxPOST
        (
            "EditarTablasEstados.aspx/ListarEstados",
            JSON.stringify
            ({
                registroBusqueda : Estado_Controller.Grid.RecordSearch,
                paginaActual : Estado_Controller.Grid.PageIndex,
                cantidadMostrar : Estado_Controller.Grid.ChooseShowPaging,
                orderBy : Estado_Controller.Grid.OrderBy
            }),
            Estado_Controller.ListarGridPaging_CallBack
        );
    },

    ListarGridPaging_CallBack:
    function Estado_Controller_ListarGridPaging_CallBack(response) 
    {
        var vista = response.d;

        Estado_Controller.Grid.TotalRecords = vista.TotalRegistros;

        $("#lblTabla").html(vista.Tabla.Nombre);

        GridJSON.DataBind(Estado_Controller.Grid, vista.Estados);

        Global_UI.BlockUI(false);
    },

    ExportarExcelGrid:
    function Estado_Controller_ExportarExcelGrid(registroBusqueda) 
    {
        Global_UI.BlockUI(true);

        registroBusqueda.TablaId = $("#hiddenTablaId").val();

        Global_UI.AjaxPOST
        (
            "EditarTablasEstados.aspx/ExportarExcelEstados",
            JSON.stringify
            ({
                registroBusqueda: registroBusqueda,
                gridFields: Estado_Controller.Grid.Fields
            }),
            Estado_Controller.ExportarExcelGrid_CallBack
        );
    },

    ExportarExcelGrid_CallBack:
    function Estado_Controller_ExportarExcelGrid_CallBack(response) 
    {
        Global_UI.MostrarArchivoExcel(response.d);

        Global_UI.BlockUI(false);
    },

    EditarRegistro:
    function Estado_Controller_EditarRegistro(id) 
    {
        Global_UI.BlockUI(true);

        if(id==null) id = "0";

        Global_UI.AjaxPOST
        (
            "EditarTablasEstados.aspx/CargarEstado",
            JSON.stringify
            ({
                id: id
            }),
            Estado_Controller.EditarRegistro_CallBack
        );
    },

    EditarRegistro_CallBack:
    function Estado_Controller_EditarRegistro_CallBack(response) 
    {
        var estado = response.d ;

        GridJSON.EditRecordGrid(Estado_Controller.Grid,estado);

        Global_UI.BlockUI(false);
    },

    GrabarRegistro:
    function Estado_Controller_GrabarRegistro(estado) 
    {
        Global_UI.BlockUI(true);

        if(estado.Id == "0") estado.Id = null;

        estado.TablaId = $("#hiddenTablaId").val();

        Global_UI.AjaxPOST
        (
            "EditarTablasEstados.aspx/GrabarEstado",
            JSON.stringify
            ({
                estado: estado
            }),
            Estado_Controller.GrabarRegistro_CallBack
        );
    },

    GrabarRegistro_CallBack:
    function Estado_Controller_GrabarRegistro_CallBack(response) 
    {
        var estado = response.d.Key;
        var nuevoRegistro = response.d.Value;

        GridJSON.ReconstructRecordGrid(Estado_Controller.Grid,estado,nuevoRegistro);

        Global_UI.BlockUI(false);
    },

    EliminarRegistro:
    function Estado_Controller_EliminarRegistro(id) 
    {
        Global_UI.Confirm
        (
            MensajesUsuario.PreguntaEliminarRegistro,
            MensajesUsuario.TituloEliminarRegistro,
            function()
            {
                Global_UI.BlockUI(true);

                Global_UI.AjaxPOST
                (
                    "EditarTablasEstados.aspx/EliminarEstado",
                    JSON.stringify
                    ({
                        id: id
                    }),
                    Estado_Controller.EliminarRegistro_CallBack
                );
            }
        );
    },

    EliminarRegistro_CallBack:
    function Estado_Controller_EliminarRegistro_CallBack(response) 
    {
        var id = response.d;

        GridJSON.DeleteRecordGrid(Estado_Controller.Grid,id);

        Global_UI.BlockUI(false);
    },
};

var EditarTablasEstados_ASPX =
{
    Load:
    function EditarTablasEstados_ASPX_Load()
    {
        Tablas_Controller.InitGrid();

        Tablas_Controller.ListarGridPaging();

        Global_UI.JqueryModalForm("dialogFormEstados", 680, 720, function () { $("#gridEstados").remove(); Estado_Controller.Grid = {};  });
    },

    LoadDialogEstados:
    function EditarTablasEstados_ASPX_LoadDialogEstados()
    {
        Global_UI.JqueryModalFormOpen("dialogFormEstados");

        Estado_Controller.InitGrid();

        Estado_Controller.ListarGridPaging();
    }
};


